{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.6861132884039939,\n",
       " -0.12243507121158939,\n",
       " 0.11622008563921185,\n",
       " 0.0001450022568494896,\n",
       " -3.137480067901388,\n",
       " 0.0004328617878218785]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import rtde_receive\n",
    "\n",
    "rtde_r=rtde_receive.RTDEReceiveInterface(\"192.168.3.140\")\n",
    "rtde_r.getActualTCPPose()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.03367798 0.00043068 0.01      ]\n",
      "[0.84194949 0.01076702 0.5       ]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "class test():\n",
    "    def __init__(self,\n",
    "                 target_pos: np.ndarray = np.array(\n",
    "                     [0.6636659946555857, -0.1308523763025472, 0.1739114244618552, 0, 3.142, 0]),   #[0.66162,-0.12988,0.13155,0,3.142,0]\n",
    "                 \n",
    "                 ) -> None:\n",
    "        self.target_pos = target_pos\n",
    "        self.pose=np.zeros(6)#用于控制机器人运动\n",
    "        self.boundary=np.zeros((2,3))#用于限制机器人的运动范围\n",
    "        self.boundary[0]=self.target_pos[:3]-0.02\n",
    "        self.boundary[0][2]=self.target_pos[2]\n",
    "        self.boundary[1]=self.target_pos[:3]+0.02\n",
    "        self.initial_error=0.02\n",
    "        \n",
    "    \n",
    "    def normalize(self):\n",
    "        init_pose=self.target_pos.copy()\n",
    "        init_pose[:2] += np.random.uniform(-self.initial_error,self.initial_error, 2)\n",
    "        init_pose[2]+=0.01\n",
    "        print(init_pose[:3] - self.boundary[0])\n",
    "        normal_obs = (init_pose[:3] - self.boundary[0]) / (self.boundary[1] - self.boundary[0])\n",
    "        return normal_obs\n",
    "# 计算归一化的目标位置\n",
    "\n",
    "t=test()\n",
    "print(t.normalize())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "yes\n"
     ]
    }
   ],
   "source": [
    "a=np.array([1,2,3])\n",
    "distance=None\n",
    "if distance:\n",
    "    print('yes')\n",
    "else:\n",
    "    distance=a.copy()\n",
    "if distance is not None:\n",
    "    print('yes')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of 0s: 499996\n",
      "Number of 1s: 500004\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "s\n",
    "# Generate 1,000,000 random bits\n",
    "bits = [random.randint(0, 1) for _ in range(1000000)]\n",
    "\n",
    "# Count the number of 0s and 1s\n",
    "num_zeros = bits.count(0)\n",
    "num_ones = bits.count(1)\n",
    "\n",
    "print(f\"Number of 0s: {num_zeros}\")\n",
    "print(f\"Number of 1s: {num_ones}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "ename": "RuntimeError",
     "evalue": "No device connected",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mRuntimeError\u001b[0m                              Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[1], line 6\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mcv2\u001b[39;00m\n\u001b[0;32m      5\u001b[0m cam \u001b[38;5;241m=\u001b[39m Camera(\u001b[38;5;241m640\u001b[39m, \u001b[38;5;241m480\u001b[39m, \u001b[38;5;241m30\u001b[39m)\n\u001b[1;32m----> 6\u001b[0m \u001b[43mcam\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mOpen\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m      7\u001b[0m cv2\u001b[38;5;241m.\u001b[39mnamedWindow(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage\u001b[39m\u001b[38;5;124m'\u001b[39m, cv2\u001b[38;5;241m.\u001b[39mWINDOW_NORMAL)\n\u001b[0;32m      8\u001b[0m cv2\u001b[38;5;241m.\u001b[39mresizeWindow(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimage\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;241m640\u001b[39m, \u001b[38;5;241m640\u001b[39m)\n",
      "File \u001b[1;32mc:\\users\\13482\\onedrive\\桌面\\新建文件夹\\gym-pih\\gym_pih\\hardware\\RealsenseCamera.py:27\u001b[0m, in \u001b[0;36mCamera.Open\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m     25\u001b[0m config\u001b[38;5;241m.\u001b[39menable_stream(rs\u001b[38;5;241m.\u001b[39mstream\u001b[38;5;241m.\u001b[39mdepth, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwidth, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mheight, rs\u001b[38;5;241m.\u001b[39mformat\u001b[38;5;241m.\u001b[39mz16, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframe_rate)\n\u001b[0;32m     26\u001b[0m config\u001b[38;5;241m.\u001b[39menable_stream(rs\u001b[38;5;241m.\u001b[39mstream\u001b[38;5;241m.\u001b[39mcolor, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwidth, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mheight, rs\u001b[38;5;241m.\u001b[39mformat\u001b[38;5;241m.\u001b[39mbgr8, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mframe_rate)\n\u001b[1;32m---> 27\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpipeline\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstart\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconfig\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m     28\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdecimation \u001b[38;5;241m=\u001b[39m rs\u001b[38;5;241m.\u001b[39mdecimation_filter()\n\u001b[0;32m     29\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mspatial \u001b[38;5;241m=\u001b[39m rs\u001b[38;5;241m.\u001b[39mspatial_filter()\n",
      "\u001b[1;31mRuntimeError\u001b[0m: No device connected"
     ]
    }
   ],
   "source": [
    "import time\n",
    "from gym_pih.hardware.RealsenseCamera import Camera\n",
    "import cv2\n",
    "\n",
    "cam = Camera(640, 480, 30)\n",
    "cam.Open()\n",
    "cv2.namedWindow('image', cv2.WINDOW_NORMAL)\n",
    "cv2.resizeWindow('image', 640, 640)\n",
    "\n",
    "while cv2.waitKey(1) != 27:\n",
    "    _,image = cam.GetImage()\n",
    "    cv2.imshow('image',image[256:320,305:369])\n",
    "cv2.destroyAllWindows()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import gymnasium as gym\n",
    "import numpy as np\n",
    "\n",
    "observation_space = gym.spaces.Dict(\n",
    "    {\"l1\":gym.spaces.Box(low=0, high=1, shape=(60,), dtype=np.float32),\n",
    "    \"l2\":gym.spaces.Box(low=0,high=1,shape=(60,),dtype=np.float32),\n",
    "    \"l3\":gym.spaces.Box(low=0,high=1,shape=(20,),dtype=np.float32),\n",
    "    \"l4\":gym.spaces.Box(low=0,high=1,shape=(20,),dtype=np.float32),\n",
    "    \"rec\":gym.spaces.Box(low=0,high=1,shape=(225,),dtype=np.float32),\n",
    "    }\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "l1: (60,)\n",
      "l2: (60,)\n",
      "l3: (20,)\n",
      "l4: (20,)\n",
      "rec: (225,)\n"
     ]
    }
   ],
   "source": [
    "for key, space in observation_space.spaces.items():\n",
    "    print(f\"{key}: {space.shape}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Box(0.0, 1.0, (60,), float32)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "observation_space['l1']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\Anaconda\\envs\\ur\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 27010 (\\N{CJK UNIFIED IDEOGRAPH-6982}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\Anaconda\\envs\\ur\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 29575 (\\N{CJK UNIFIED IDEOGRAPH-7387}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\Anaconda\\envs\\ur\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 23494 (\\N{CJK UNIFIED IDEOGRAPH-5BC6}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\Anaconda\\envs\\ur\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 24230 (\\N{CJK UNIFIED IDEOGRAPH-5EA6}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\Anaconda\\envs\\ur\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 25351 (\\N{CJK UNIFIED IDEOGRAPH-6307}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\Anaconda\\envs\\ur\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 25968 (\\N{CJK UNIFIED IDEOGRAPH-6570}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\Anaconda\\envs\\ur\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 20998 (\\N{CJK UNIFIED IDEOGRAPH-5206}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "d:\\Anaconda\\envs\\ur\\lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 24067 (\\N{CJK UNIFIED IDEOGRAPH-5E03}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "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GRmSpNq1a5d6jKdeM2WZjeRZv2cKCws1c+ZMZWdnq0ePHiUe46nXS1lmI3nW9fLwww/rqquuOut6KIkrXTeU2YuQnp6uwsJChYSEnPF6SEhIqev2UlJSynW8u7qQ2TRv3lzTp0/XDz/8oM8++0xFRUXq2bOnDhw44IzILqu0ayYzM1MnT560KJX16tWrp6lTp+qbb77RN998o4iICPXr109r1661OlqlKSoq0pgxY9SrVy+1adOm1OM85ffM/yrrbDzl90xiYqKqV68uHx8fPfDAA/ruu+/UqlWrEo/1tOulPLPxlOtFkmbOnKm1a9dq4sSJZTrela4bL6efEShFjx49zviv4549e6ply5aaNm2ann/+eQuTwRU1b95czZs3L/66Z8+e2rVrl15//XV9+umnFiarPA8//LA2btyopUuXWh3F5ZR1Np7ye6Z58+ZKSEhQRkaGvv76a91xxx2KjY0ttbR5kvLMxlOul/379+uxxx7T/Pnz3fIGN8rsRQgKCpLdbldqauoZr6empio0NLTE94SGhpbreHd1IbP5K4fDoQ4dOmjnzp2VEdFtlHbNBAYGys/Pz6JUrqlr165VtuiNHj1aP//8s5YsWaLw8PBzHuspv2f+VJ7Z/FVV/T3j7e2tJk2aSJI6deqk1atX64033tC0adPOOtbTrpfyzOavqur1Eh8fr7S0NHXs2LH4tcLCQi1ZskRvv/22cnNzZbfbz3iPK103LDO4CN7e3urUqZMWLFhQ/FpRUZEWLFhQ6vqbHj16nHG8JM2fP/+c63Xc0YXM5q8KCwuVmJioevXqVVZMt+Ap10xFSEhIqHLXi2maGj16tL777jstXLhQjRo1Ou97POWauZDZ/JWn/J4pKipSbm5uid/zlOulNOeazV9V1etlwIABSkxMVEJCQvGfzp0767bbblNCQsJZRVZysevG6becVTEzZ840fXx8zI8++sjcvHmzed9995k1a9Y0U1JSTNM0zREjRphPPfVU8fHLli0zvby8zFdffdXcsmWLOX78eNPhcJiJiYlW/QiVpryzefbZZ825c+eau3btMuPj481bbrnF9PX1NTdt2mTVj1ApsrKyzHXr1pnr1q0zJZmTJk0y161bZ+7bt880TdN86qmnzBEjRhQfv3v3btPf39/8v//7P3PLli3mlClTTLvdbs6ZM8eqH6FSlHcur7/+uvn999+bO3bsMBMTE83HHnvMtNls5m+//WbVj1ApHnzwQbNGjRrm4sWLzUOHDhX/ycnJKT7GU3/PXMhsPOH3zFNPPWXGxsaae/bsMTds2GA+9dRTpmEY5rx580zT9NzrxTTLPxtPuF5K89fdDFz5uqHMVoC33nrLbNCggent7W127drVXLlyZfH3+vbta95xxx1nHP/ll1+azZo1M729vc3WrVubv/zyi5MTO095ZjNmzJjiY0NCQswrr7zSXLt2rQWpK9efW0r99c+fs7jjjjvMvn37nvWe6Oho09vb24yKijI//PBDp+eubOWdy0svvWQ2btzY9PX1NWvXrm3269fPXLhwoTXhK1FJM5F0xjXgqb9nLmQ2nvB75q677jIbNmxoent7m3Xr1jUHDBhQXNZM03OvF9Ms/2w84XopzV/LrCtfN4ZpmqbzPgcGAAAAKg5rZgEAAOC2KLMAAABwW5RZAAAAuC3KLAAAANwWZRYAAABuizILAAAAt0WZBQAAgNuizAIAAMBtUWYBAADgtiizAOCGCgsL1bNnT91www1nvJ6RkaGIiAg9/fTTFiUDAOficbYA4Ka2b9+u6Ohovffee7rtttskSSNHjtT69eu1evVqeXt7W5wQACofZRYA3Nibb76pCRMmaNOmTYqLi9NNN92k1atXq3379lZHAwCnoMwCgBszTVOXXnqp7Ha7EhMT9cgjj+gf//iH1bEAwGkoswDg5rZu3aqWLVuqbdu2Wrt2rby8vKyOBABOww1gAODmpk+fLn9/f+3Zs0cHDhywOg4AOBWfzAKAG1u+fLn69u2refPm6YUXXpAk/fbbbzIMw+JkAOAcfDILAG4qJydHd955px588EH1799fH3zwgeLi4jR16lSrowGA0/DJLAC4qccee0y//vqr1q9fL39/f0nStGnT9OSTTyoxMVGRkZHWBgQAJ6DMAoAbio2N1YABA7R48WL17t37jO8NHjxYBQUFLDcA4BEoswAAAHBbrJkFAACA26LMAgAAwG1RZgEAAOC2KLMAAABwW5RZAAAAuC3KLAAAANwWZRYAAABuizILAAAAt0WZBQAAgNuizAIAAMBtUWYBAADgtv4fzvg7q5zv65cAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# 定义指数分布的参数\n",
    "lambda_ = 0.5\n",
    "\n",
    "# 生成数据\n",
    "x = np.linspace(0, 4, )  # 生成从0到4的100个等间隔数值\n",
    "y = lambda_ * np.exp(-lambda_ * x)  # 计算概率密度函数的值\n",
    "\n",
    "# 绘制图像\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(x, y)\n",
    "plt.title('指数分布')\n",
    "plt.xlabel('X')\n",
    "plt.ylabel('概率密度')\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ur",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
